package jianzhiOffer;

import java.util.Deque;
import java.util.LinkedList;

/**
 * @author : xwj
 * @date : 2021/9/26 21:56
 * @description : 用两个栈实现一个队列。队列的声明如下，
 *                请实现它的两个函数 appendTail 和 deleteHead ，
 *                分别完成在队列尾部插入整数和在队列头部删除整数的功能。
 *                (若队列中没有元素，deleteHead 操作返回 -1 )
 * @class : test01
 **/

public class test01 {

    static class CQueue {

        //初始栈
        Deque<Integer> s1;
        //缓冲栈
        Deque<Integer> s2;

        public CQueue() {
            s1 = new LinkedList<>();
            s2 = new LinkedList<>();
        }

        public void appendTail(int value) {
            s1.push(value);
        }

        public int deleteHead() {
            if (s2.isEmpty()) {
                while (!s1.isEmpty()) {
                    s2.push(s1.pop());
                }
            }
            if (s2.isEmpty()) {
                return -1;
            } else {
                return s2.pop();
            }
        }
    }

    public static void main(String[] args) {
        CQueue c = new CQueue();
        c.appendTail(1);
        c.appendTail(2);
        c.appendTail(3);
        c.deleteHead();
    }

}
